package NegocioTestes;

import static org.junit.Assert.*;

import java.sql.SQLException;
import java.util.List;

import org.junit.Test;

import Negocio2.*;	
import NegocioException.OperacaoIncorretaException;

import DAO.*;

public class DepartamentoTeste {

	 private DisciplinaDAO disciplinaDAO;
	 private Disciplina disciplina;
	 private ProfessorDAO professorDAO;
	 private Professor professor;
	 private FachadaSistema fachada;
	 private DepartamentoDAO depDao;
	 private CursoDAO cursoDao;
	 private Departamento dep;
	 private Curso curso;
	 private Turma turma;
	 private TurmaDAO turmaDao;
	 
	 public DepartamentoTeste() throws SQLException{
		  this.professorDAO= new ProfessorDAO();
		  this.professor= new Professor("AYLA","1234");
		  this.fachada=fachada.getInstancia();
		  this.depDao= new DepartamentoDAO();
		  this.dep= new Departamento("CCAA");
		  this.disciplina= new Disciplina("Etica","6");
		  this.disciplinaDAO= new DisciplinaDAO();
		  this.cursoDao= new CursoDAO();
		  this.curso=new Curso("MAt","1234");
		  this.turma=new Turma("2001","11");
	 }
     	
	 @Test
	
	 
	public void cadastrarDepartamentoTest() throws SQLException{
		   this.fachada.cadastrarDepartamento(dep);
		   assertTrue(this.depDao.getLista().size()>0);
		  		   
	}
	 
	 public void cadastrarProfessorDepartamentoTest() throws SQLException{
		 this.fachada.adicionaProfessorDepartamento(professor, dep);
		 assertTrue(this.professorDAO.getLista().contains(professor));
	 }
	 
	 public void addCursoTest() throws OperacaoIncorretaException, SQLException{
		 this.fachada.addCurso(this.curso, this.dep);
		 assertTrue(this.cursoDao.getLista().contains(this.curso));
	 }
	 public void addDisciplinaCurso() throws SQLException{
		 this.fachada.addDisciplinaCurso(this.curso, this.disciplina);
		 assertTrue(this.disciplinaDAO.getLista().contains(this.disciplina));
		 assertTrue(this.curso.getDisciplinas().contains(this.disciplina));
	 }
	 public void addDisciplinaProfessorTest() throws OperacaoIncorretaException, SQLException{
		 this.fachada.addDisciplinaProfessor(this.disciplina, this.professor);
		 assertTrue(this.disciplinaDAO.getLista().contains(this.disciplina));
		 assertTrue(this.professorDAO.getLista().contains(this.professor));
		 
	 }
	 
	 public void addTurmaNoCurso() throws SQLException{
		 this.fachada.addTurmaCurso(turma, curso, dep);
		 assertTrue(this.turmaDao.getLista().contains(this.turma));
		 assertTrue(this.curso.getTurmas().contains(turma));
		 assertTrue(this.dep.getCursos().contains(curso));
	 }
	 
	 
	

	
}
